查看原文
其他

JVM常用排查工具这些你都会用吗

SpringForAll 2023-03-11
关注我,回复关键字“spring”
免费领取Spring学习资料

阅读本文你可以学到以下命令的常规使用【jps,jinfo,jstat,jmap,jstack,jcmd,jrunscript,jjs】

jps

获取当前运行中java进程,

示例:

jps -lmv 可以打印详细信息-l 输出main类或jar的全限名,-m传入main方法的参数,-v传入jvm的参数

jinfo

使用 jinfo pid 可以查看当前进程系统属性信息以及进程启动jvm参数信息,jdk版本信息

示例:jinfo pid

jstat

JVM统计检测工具

示例:

jstat -gc pid 1000 10 (打印pid的gc信息,每一秒打印一次,打印10次)jstat -gcutil pid 1000 10(打印pid的gc百分比信息,每一秒打印一次,打印10次)

说明 C是容量(capacity),U是使用量(utilization)

S0C survivor0区的容量S0U survivor0区的使用量S1C survivor1区的容量S1Usurvivor1区的使用量EC eden区的容量EU eden区的使用量OC old区的容量OU old区的使用量MC 元数据区容量MU 元数据区使用量CCSC 压缩的class空间容量CCSU 压缩的class空间使用量YGC 年轻代GC次数YGCT 年轻代GC总时间FGC Full GC 次数FGCT Full GC总时间GCT 垃圾收集总时间

jmap

打印堆内存配置和使用信息

jmap -heap pid

看哪些类占用的空间最多

jmap -histo pid

dump 文件输出

jmap -dump:format=b,file=xxxx.hprof pid

jstack

-f 强制执行thread dump 可在进程卡死时使用,需要系统权限

jstack -f pid

-m 混合输出(mixed mode) 将java帧和native帧一起输出

jstack -m pid

-l 输出详细信息,长列表模式,打印相关的锁信息

jstack -l pid

jcmd

查看信息

可以使用 jcmd pid help  获取可以查看当前进程参数信息

// 版本jcmd pid VM.version// 参数jcmd pid VM.flags// 启动命令jcmd pid VM.command_line// 系统参数jcmd pid VM.system_properties// 线程信息jcmd pid VM.Thread.print// GC 占用空间情况jcmd pid GC.class_histogram// GC 年轻代,老年代,元数据区信息jcmd pid GC.heap_info

jrunscript/jjs




END



Spring Cloud 与响应式微服务
SpringBoot + Sharding JDBC 搞定分库分表、读写分离
Kubernetes 上 Java 应用的最佳实践
Spring 中的 @Cacheable 缓存注解

关注后端面试那些事,回复【2022面经】

获取最新大厂Java面经

最后重要提示:高质量的技术交流群,限时免费开放,今年抱团最重要。想进群的,关注SpringForAll社区,回复关键词:加群,拉你进群。

点击这里领取2023大厂面经

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存